﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace Crm.Web
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "ICrmService" in both code and config file together.
    [ServiceContract]
    public interface ICrmService
    {
        [OperationContract]
        void GorusmelerEkle(Hareket grs, List<Katilimci> katilimcilar);

        [OperationContract]
        void KatilimciEkle(Katilimci katilimci);

        [OperationContract]
        void KullaniciEkle(Kullanici kullanici);

        [OperationContract]
        void KullaniciYetkiEkle(KullaniciYetki kullaniciYetki);

        [OperationContract]
        void TanimEkle(GenelTanim tanim);

        [OperationContract]
        void GorusmelerSil(Hareket grs);

        [OperationContract]
        void KatilimciSil(Katilimci katilimci);

        [OperationContract]
        void KullaniciSil(Kullanici kullanici);

        [OperationContract]
        void KullaniciYetkiSil(KullaniciYetki kullaniciYetki);

        [OperationContract]
        void TanimSil(GenelTanim tanim);

        [OperationContract]
        List<Hareket> GorusmelerListele();

        [OperationContract]
        List<Hareket> RandevuListele();

        [OperationContract]
        List<Katilimci> KatilimciListele();

        [OperationContract]
        List<Kullanici> KullaniciListele();

        [OperationContract]
        List<KullaniciYetki> KullaniciYetkiListele(int kullaniciID);

        [OperationContract]
        List<GenelTanim> TanimListele(byte tip);

        [OperationContract]
        Hareket GorusmelerBul(int ID);

        [OperationContract]
        Katilimci KatilimciBul(int ID);

        [OperationContract]
        Kullanici KullaniciBul(int ID);

        [OperationContract]
        Kullanici KullaniciGiris(string userName, string password);

        [OperationContract]
        KullaniciYetki KullaniciYetkiBul(int ID);

        [OperationContract]
        GenelTanim TanimBul(int ID);

        [OperationContract]
        List<Hesap> FirmaListesi(string filtre, bool kod, byte tip);

        [OperationContract]
        List<Yetkili> YetkiliListele(string carikodu, int adresNo);

        [OperationContract]
        List<Adres> AdresListele(string carikodu);

        [OperationContract]
        Hesap HesapBilgileri(int hesapID, int firmaTip);

        [OperationContract]
        Adres AdresBilgileri(int adresID);

        [OperationContract]
        Yetkili YetkiliBilgileri(int yetkiliID);

        [OperationContract]
        void AdayCariEkle(AdayCari aday);

        [OperationContract]
        List<AdayCariOzet> AdayCariListesi();

        [OperationContract]
        void AdayCariSil(string kodu);

        [OperationContract]
        void CariyeCevir(AdayCari aday);

        [OperationContract]
        List<Yetkili> CariGruplariListele();

        [OperationContract]
        List<Yetkili> CariSektorListele();

        [OperationContract]
        List<Yetkili> CariBolgeListele();

        [OperationContract]
        List<Yetkili> CariTemsilciListele();

        [OperationContract]
        AdayCari AdayCariBilgi(string kodu);

        [OperationContract]
        List<Gorevler> TelefonlaGorusulecekler(int kullaniciID);

        [OperationContract]
        List<Gorevler> ZiyaretEdilecekler(int kullaniciID);

        [OperationContract]
        Hareket GorusmeyeBasla(bool adaycari, int cariID, string carikodu, string cariunvani, int usrid);

        [OperationContract]
        void AdayCariCevir(string adaycarikodu, string yenicariKodu);


        [OperationContract]
        int AnketTanimEkle(int ID, string anketAdi, bool Gecerli);
        [OperationContract]
        int AnketSoruEkle(int ID, int AnketID, string SoruAdi, bool CokluSecim);
        [OperationContract]
        void AnketCevapEkle(int ID, int SoruID, string Senecek, bool OzelCevap);
        [OperationContract]
        void Anketler(int ID, int MusteriTip, int MusteriID, int AnketID, int SoruID, int CevapID, string OzelCevap, DateTime Tarih);
        [OperationContract]
        string AnketKaydet(AnketTanimlari bilgi);
        [OperationContract]
        Soru SoruGetir(int MusteriID);
        [OperationContract]
        AnketTanimlari AnketBul(int AnketID);
        [OperationContract]
        void SoruSil(int SoruID);
        [OperationContract]
        void AnketSil(int AnketID);
        [OperationContract]
        List<AnketTanimlari> AnketListesi();

        [OperationContract]
        string KampanyaKaydet(int ID, int No, string Adi, byte Tip, string FirmaKod, string FirmaUnvan, string StokKod, string StokAdi, double Fiyat);
        [OperationContract]
        string KampanyaSil(int ID);
        [OperationContract]
        KampanyaTanimlari KampanyaGetir(int ID);
        [OperationContract]
        void KampanyaTanimSil(int ID);
        [OperationContract]
        List<KampanyaTanimlari> KampanyaListesi();
        [OperationContract]
        List<KampanyaList> StokListesi(string filtre);
        [OperationContract]
        int MaxKampanyaNo();
        [OperationContract]
        List<KampanyaBilgi> GenelKampanyalar();
        [OperationContract]
        List<KampanyaBilgi> FirmaKampanya(string firmakodu);

        [OperationContract]
        List<KategoriRaporu> CariKategoriRaporu(string cari);
        [OperationContract]
        List<UrunCiro> CariSatisRaporu(string cari);
        [OperationContract]
        List<FirmaSonHareket> FirmayaAitSonHareket(string cari);

        [OperationContract]
        string[] GetSqlQuery(string sql1, string sql2);

        [OperationContract]
        void RaporEkle(Rapor rpr);

        [OperationContract]
        void RaporSil(Rapor rpr);

        [OperationContract]
        List<Rapor> RaporListele();

        [OperationContract]
        List<CariBakiye> CariBakiyeRaporu(string cari);

        [OperationContract]
        List<UrunCiro> KategoriDetayRaporu(string cari, string kategorikodu, int ay);

        [OperationContract]
        Hareket RandevuyaBasla(bool adaycari, int cariID, string carikodu, string cariunvani, int usrid);
    }
}
